package cn.bearspark.like.provider.dao.mapper;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Set;

/**
 * 评论点赞的数据映射接口
 *
 * @author f
 */
@Mapper
public interface CommentLikeMapper {

    /**
     * 添加一条点赞评论的记录
     *
     * @param userId    点赞的用户 id
     * @param commentId 被点赞的评论 id
     * @return 添加操作影响的行数
     */
    @Insert("INSERT INTO t_comment_like (user_id, comment_id) VALUES (#{userId}, #{commentId})")
    int insert(long userId, long commentId);

    /**
     * 删除一条点赞评论的记录
     *
     * @param userId    取消点赞的用户 id
     * @param commentId 被取消点赞的评论 id
     * @return 删除操作影响的行数
     */
    @Delete("DELETE FROM t_comment_like WHERE user_id = #{userId} AND comment_id = #{commentId}")
    int delete(long userId, long commentId);

    /**
     * 在指定评论集合中筛选指定用户点赞的评论 id 集合
     *
     * @param commentIdList 指定评论的 id 集合
     * @param userId        指定用户的 id
     * @return 在指定评论集合中，指定用户点赞的评论 id 集合
     */
    Set<Long> getLikedCommentIdSet(List<Long> commentIdList, long userId);
}
